﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MVC4WPF.Automation.Data
{
    /// <summary>
    /// Full information about the individual parts of a property supported in a contract.
    /// </summary>
    [Serializable()]
    public class ContractProperty
    {
        /// <summary>
        /// Name of the property
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// The overall access level of the property
        /// </summary>
        public string PropertyAccessLevel { get; set; }

        /// <summary>
        /// The fully qualified type of the property
        /// </summary>
        public string PropertyType { get; set; }

        /// <summary>
        /// Flag used to determine if the get accessor is public
        /// </summary>
        public bool IsGetPublic { get; set; }

        /// <summary>
        /// Flag used to determin if the set access is public
        /// </summary>
        public bool IsSetPublic { get; set; }

        /// <summary>
        /// Flag used to determine if the property supports reading
        /// </summary>
        public bool HasGetAccessor { get; set; }

        /// <summary>
        /// Flag used to determine if the property supports writing
        /// </summary>
        public bool HasSetAccessor { get; set; }

        /// <summary>
        /// The access level set on the get accessor
        /// </summary>
        public string GetAccessLevel { get; set; }

        /// <summary>
        /// The access level set on the set accessor
        /// </summary>
        public string SetAccessLevel { get; set; }

        /// <summary>
        /// Is the property an object type
        /// </summary>
        public bool TypeIsObject { get; set; }

        /// <summary>
        /// Does the property object support IDisposable
        /// </summary>
        public bool TypeIsDisposable { get; set; }
    }
}
